package entity

import (
	"gluenet/internal/glue-srvp/domain/po"
	"gluenet/internal/pkg/infra"
)

type TagDetail struct {
	infra.Entity `xorm:"-" json:"-"`
	po.TagDetail `xorm:"extends" json:",inline"`
}

func (r TagDetail) Identity() int64 {
	return r.Id
}

func (r TagDetail) TableName() string {
	return "label_tag_snap"
}

type TagGroup struct {
	infra.Entity   `xorm:"-" json:"-"`
	po.TagGroup    `xorm:"extends" json:",inline"`
	TagGroupToUser po.TagGroupUser `xorm:"-" json:"-"`
}

func (r TagGroup) Identity() int64 {
	return r.Id
}

func (r TagGroup) TableName() string {
	return "label_tag_group"
}

type Tag struct {
	infra.Entity `xorm:"-" json:"-"`
	po.Tag       `xorm:"extends" json:",inline"`
	TagToUser    po.TagUser      `xorm:"-" json:"-"`
	Group        po.TagGroup     `xorm:"-" json:"-"`
	GroupToUser  po.TagGroupUser `xorm:"-" json:"-"`
}

func (r Tag) Identity() int64 {
	return r.Id
}

func (r Tag) TableName() string {
	return "label_tag"
}

type TagObj struct {
	infra.Entity `xorm:"-" json:"-"`
	po.TagObj    `xorm:"extends" json:",inline"`
}

func (r TagObj) Identity() int64 {
	return r.TagId
}

func (r TagObj) TableName() string {
	return "label_tag_to_obj"
}
